package com.github.cakin.shiro.chapter21.dao;

import java.util.List;

/**
 * @className: UserRunAsDaoImpl
 * @description: UserRunAsDaoImpl 实现类
 * @date: 2020/5/29
 * @author: cakin
 */
public interface UserRunAsDao {
    /**
     * 功能描述：fromUserId（老板） 授权给 toUserId（秘书）
     *
     * @param fromUserId 授权者
     * @param toUserId   被授权者
     * @author cakin
     * @date 2020/5/29
     */
     void grantRunAs(Long fromUserId, Long toUserId);
    /**
     * 功能描述：fromUserId（老板） 取消授权给 toUserId（秘书）
     *
     * @param fromUserId 授权者
     * @param toUserId   被授权者
     * @author cakin
     * @date 2020/5/29
     */
     void revokeRunAs(Long fromUserId, Long toUserId);
    /**
     * 功能描述：fromUserId（老板） 和 toUserId（秘书） 这条授权记录在表中是否存在
     *
     * @param fromUserId 授权者
     * @param toUserId   被授权者
     * @return boolean boolean
     * @author cakin
     * @date 2020/5/29
     */
     boolean exists(Long fromUserId, Long toUserId);
    /**
     * 功能描述：查看 哪些授权者（老板列表） 给 被授权者（秘书）授权
     *
     * @param toUserId 被授权者（秘书）
     * @return List<Long> 授权者列表（老板）
     * @author cakin
     * @date 2020/5/29
     */
     List<Long> findFromUserIds(Long toUserId);
    /**
     * 功能描述：查看 授权者（老板） 给 哪些被授权者（秘书列表）授权
     *
     * @param fromUserId 授权者（老板）
     * @return List<Long> 被授权者列表（秘书）
     * @author cakin
     * @date 2020/5/29
     */
     List<Long> findToUserIds(Long fromUserId);

}
